/**
 * Created by wangpeng on 2017/12/23.
 */
'use strict';
module.exports = app => {
  const mongoose = app.mongoose;
  const Schema = mongoose.Schema;
  const cartSchema = new Schema({
    id: Number,
    cart: {
      id: Number,
      groups: [
        [
          {
            attrs: [],
            extra: [],
            id: Number,
            new_specs: [],
            name: String,
            price: Number,
            quantity: Number,
            specs: [ String ],
            packing_fee: Number,
            sku_id: Number,
            stock: Number,
          },
        ],
      ],
      extra: [{
        description: String,
        name: { type: String, default: '餐盒' },
        price: { type: Number, default: 0 },
        quantity: { type: Number, default: 0 },
        type: { type: Number, default: 0 },
      }],
      deliver_amount: Number,
      deliver_time: String,
      discount_amount: String,
      dist_info: String,
      is_address_too_far: { type: Boolean, default: false },
      is_deliver_by_fengniao: Boolean,
      is_online_paid: { type: Number, default: 1 },
      is_ontime_available: { type: Number, default: 0 },
      must_new_user: { type: Number, default: 0 },
      must_pay_online: { type: Number, default: 0 },
      ontime_status: { type: Number, default: 0 },
      ontime_unavailable_reason: String,
      original_total: Number,
      phone: String,
      promise_delivery_time: { type: Number, default: 0 },
      restaurant_id: Number,
      restaurant_info: Schema.Types.Mixed,
      restaurant_minimum_order_amount: Number,
      restaurant_name_for_url: String,
      restaurant_status: { type: Number, default: 1 },
      service_fee_explanation: { type: Number, default: 0 },
      total: Number,
      user_id: Number,
    },
    delivery_reach_time: String,
    invoice: {
      is_available: { type: Boolean, default: false },
      status_text: String,
    },
    sig: String,
    current_address: {},
    payments: [{
      description: String,
      disabled_reason: String,
      id: Number,
      is_online_payment: { type: Boolean, default: true },
      name: String,
      promotion: [],
      select_state: Number,
    }],
    deliver_times: [],
    deliver_times_v2: [],
    merchant_coupon_info: {},
    number_of_meals: {},
    discount_rule: {},
    hongbao_info: {},
    is_support_coupon: { type: Boolean, default: false },
    is_support_ninja: { type: Number, default: 1 },
  });

  cartSchema.index({ id: 1 });

  return mongoose.model('Cart', cartSchema);
};
